import { ElLoading, ElMessage } from 'element-plus'

/**
 * 显示加载弹窗并执行异步任务
 * @param {Function} task - 需执行的异步任务（必传，需返回Promise）
 * @param {Object} options - 加载弹窗配置（可选，默认有基础配置）
 * @returns {Promise<any>} 异步任务的返回结果
 */
export const displayLoading = async (task, options = {}) => {
  // 合并默认配置与用户自定义配置
  const loadingOptions = {
    lock: true,
    text: '正在加载',
    background: 'rgba(0, 0, 0, 0.7)',
    ...options, // 支持用户覆盖配置（如text、background等）
  }

  // 创建加载实例
  const loadingInstance = ElLoading.service(loadingOptions)

  try {
    // 执行传入的异步任务，并返回结果
    return await task()
  } catch (error) {
    console.log(error)
    // 重新抛出错误，允许外部处理（如回滚状态）
    throw error
  } finally {
    // 无论成功/失败，都关闭加载弹窗
    loadingInstance.close()
  }
}
